﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Linq.Expressions;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Windows.Forms;
using Business_Logic;
using Business_Entity;
using PetSoft.GUI;

namespace PetSoft.GUI.Ventas
{
    public partial class GUICliente : Form
    {
        //public GUIPetSoft guiPetSoft;
        //public GUIMascota guiHija;
        private GUIMantenimientoCliente guiMantenimientoCliente;        	                               
        private BECliente clienteSeleccionado;                
        private BEMascota mascotaSeleccionada;
        private List<BEMascota> listaMascotas;
        
        private List<BESexo> listaSexos;
        private List<BECategoriaCliente> listaCategoriaCliente;
        private List<BEEstadoCliente> listaEstadosCliente;
        private List<BETipoDocumento> listaTipoDocumento;        
        
        private int tipoVentana = 0;
        
        public GUIMantenimientoCliente GuiMantenimientoCliente {
			get { return guiMantenimientoCliente; }
			set { guiMantenimientoCliente = value; }
		}
        
        public BECliente ClienteSeleccionado {
			get { return clienteSeleccionado; }
			set { clienteSeleccionado = value; }
		}
        
		public BEMascota MascotaSeleccionada {
			get { return mascotaSeleccionada; }
			set { mascotaSeleccionada = value; }
		}
        
        public GUICliente(int tipoVentana)
        {
        	try{
            	InitializeComponent();            
            	inicializarComponentes();
            	this.tipoVentana = tipoVentana;
        	}catch{
        		
        	}
            
        }
                
        /*
        public GUICliente(BECliente cliente)
        {
            InitializeComponent();            
            inicializarComponentes();
            this.clienteSeleccionado = cliente;                        
            llenarCampos();
            llenarGrillaMascotas();            
        }
        */
/*
        public GUICliente(BECliente cliente, Boolean buscarGestionar){
        	InitializeComponent();            
            inicializarComponentes();
            this.clienteSeleccionado = cliente;                        
            llenarCampos();
            llenarGrillaMascotas();            
            
           	if(buscarGestionar){ // buscar mascota de cliente
            	EditarBTN.Visible = false;            	
            	EliminarBTN.Visible = false;
            	
            	this.Text = "Mascotas de" + 
            		        this.clienteSeleccionado.Nombre + " " + 
            		        this.clienteSeleccionado.ApellidoPaterno;
            	
            	removerTabClientes();
            }else{ // gestionar
            	AceptarMascotaBTN.Visible = false;
            	CancelarMascotaBTN.Visible = false;
            }
            
        }
  */      
       	public GUICliente(BECliente cliente, int tipoVentanaX){
		 	try{
	        	InitializeComponent();            
	            inicializarComponentes();
	            this.clienteSeleccionado = cliente;                        	            	            
	            this.tipoVentana = tipoVentanaX;            
	            
	            //MessageBox.Show(tipoVentanaX + " " + tipoVentana);
	            
	           	if(tipoVentana == 1){ // ver cliente y mascotas
	            	
	            	//cliente
	            	llenarCampos();
	            	llenarGrillaMascotas();            
	            	deshabilitarCampos();
	            	
	            	//mascota
	            	NuevoBTN.Enabled = false;            	
	            	EditarBTN.Visible = false;            	
	            	EliminarBTN.Visible = false;  						            	
	            	
	            }else if(tipoVentana == 2){ //editar cliente y mascota
					
					//cliente
					llenarCampos();
					llenarGrillaMascotas();            
					habilitarCampos();
					
					//mascota
	            	AceptarMascotaBTN.Visible = false;
	            	CancelarMascotaBTN.Visible = false;	
	            	DejarEnAdopcionBTN.Visible = true;	
	            	            	            	
	            }else if(tipoVentana == 3){ // buscar mascotas de cliente
	            	//MessageBox.Show("33333");
	            	//cliente
	            	removerTabClientes();
	            	llenarGrillaMascotas();            
	            		
	            	//mascota
	            	EditarBTN.Visible = false;            	
	            	EliminarBTN.Visible = false;            	
	            }
 			}catch(Exception ex){
 				Utils.MessageError("",ex);
 			}
        }
        
        public void inicializarComponentes(){
 			try{
	        	inicializarCombos();
	        	NumeroDocumentoTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);
	            telefonoContactoTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);
	            FechaNacimientoDTP.MaxDate = DateTime.Today;
	            NombreTB.KeyPress += new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
	            ApellidoPaternoTB.KeyPress += new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
	            ApellidoMaternoTB.KeyPress += new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
	            NumeroDocumentoTB.KeyPress += new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
	            DirecciontTB.KeyPress += new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
 			}catch{
 		
 			}
        }
        
        public void cambiarNombreVentana(String nombreVentana){
        	this.Text = nombreVentana;
        }  		
        
        private void buAceptar_Click(object sender, EventArgs e)
        {
        	try{
        		        		
        		if(tipoVentana == 1){
        			this.Dispose();
        			return;
        		}
        		
        		String msg = "";
        		
        		if(NombreTB.Text.Equals("") || 
        		   ApellidoPaternoTB.Text.Equals("") ||
        		   ApellidoMaternoTB.Text.Equals("") || 
        		   Convert.ToInt16(SexoCB.SelectedValue) == -1 ||
        		   Convert.ToInt16(TipoDocumentoCB.SelectedValue) == -1 || 
        		   NumeroDocumentoTB.Text.Equals("") ||
        		   Convert.ToInt16(CategoriaCB.SelectedValue) == -1){        			        		
        			
        			msg = msg + "Debe llenar los siguientes campos:"+'\n';
        		
	        		if(NombreTB.Text.Equals(""))
	        			msg = msg + " - Nombre" + '\n';
	        		
	        		if(ApellidoPaternoTB.Text.Equals(""))
	        			msg = msg + " - Apellido paterno" + '\n';
	        		
	        		if(ApellidoMaternoTB.Text.Equals(""))
	        			msg = msg + " - Apellido materno" + '\n';
	        		
	        		if(Convert.ToInt16(TipoDocumentoCB.SelectedValue) == -1)
	        			msg = msg + " - Tipo de Documento Identidad" + '\n';
	        		
	        		if(NumeroDocumentoTB.Text.Equals("") || NumeroDocumentoTB.MaxLength == NumeroDocumentoTB.Text.Length)
	        			msg = msg + " - Documento de Identidad" + '\n';
	        		
	        		if(Convert.ToInt16(SexoCB.SelectedValue) == -1)
	        			msg = msg + " - Sexo" + '\n';	        			        
	        		
	        		if(Convert.ToInt16(CategoriaCB.SelectedValue) == -1)
	        			msg = msg + " - Categoría" + '\n';
        		}
	        	
        		if(DateTime.Compare(FechaNacimientoDTP.Value.Date,DateTime.Now.Date) >= 0)
	        		msg = msg + "Debe ingresar una fecha menor al día de hoy";
	        		
        		if(!msg.Equals("")){
        			Utils.MessageAviso(msg);
        			return;        		       		 
        		}
        		
        		//verificar si ya existe un cliente con ese DNI!!!!
        		
    			// datos personales  
    			BECliente beCliente = new BECliente();
    			if(!CodigoTB.Text.Equals(""))
    				beCliente.IdCliente = int.Parse(CodigoTB.Text);
        		beCliente.Nombre = NombreTB.Text;
        		beCliente.ApellidoPaterno = ApellidoPaternoTB.Text;
        		beCliente.ApellidoMaterno = ApellidoMaternoTB.Text;
				beCliente.Sexo = SexoCB.Text;
				beCliente.BeTipoDocumento = new BETipoDocumento();
				beCliente.BeTipoDocumento.IdTipoDoc = Convert.ToInt16(TipoDocumentoCB.SelectedValue);
				beCliente.BeTipoDocumento.Descripcion = TipoDocumentoCB.Text;				
        		beCliente.DocumentoIdentidad = NumeroDocumentoTB.Text;
                beCliente.FechaNacimiento = FechaNacimientoDTP.Value;
                
                //informacion de contacto
                beCliente.Direccion = DirecciontTB.Text;
                beCliente.TelefonoContacto = telefonoContactoTB.Text;
                
                //info configuracion
                beCliente.FechaCreacion = FechaCreacionDTP.Value;
                beCliente.FechaModificacion = FechaUltModificacionDTP.Value;
                beCliente.BeEstadoCliente.IdEstadoCliente = Convert.ToInt16(EstadoCB.SelectedValue);
                beCliente.BeCategoriaCliente = new BECategoriaCliente();
                beCliente.BeCategoriaCliente.IdCategoria = Convert.ToInt16(CategoriaCB.SelectedValue);
                beCliente.BeCategoriaCliente.Nombre = CategoriaCB.Text;                
				//FALTA USUARIO!!!!!!!!!!!!!!!!

				if(!Utils.MessagePregunta("¿Está seguro que desea realizar la siguiente acción?")) 
					return;
				
                BLCliente blCliente = new BLCliente();
        		              
                int r = 0;
                
                if(CodigoTB.Text.Equals("")){
                	r = blCliente.insertarNuevoCliente(beCliente);	
                	if(r == 1){
	               		Utils.MessageInformation("Se insertó correctamente el cliente");
	               		guiMantenimientoCliente.llenarGrilla();
                		this.Dispose();	                	        
                	}else if(r == 2){
                		Utils.MessageAviso("Ya existe un cliente con ese documento de identidad");
                	}else{
                		Utils.MessageError("Ocurrió un error al insertar el cliente",null);
                		this.Dispose();	                	        
                	}
                }else if(!CodigoTB.Text.Equals("")){
                	r = blCliente.actualizarCliente(beCliente);
                	if(r == 1){
                		Utils.MessageInformation("Se actualizó correctamente el cliente");                		
                		guiMantenimientoCliente.llenarGrilla();
                		this.Dispose();	                	        
                	}else if(r == 2){
                		Utils.MessageAviso("Ya existe un cliente con ese documento de identidad");
                	}else{
                		Utils.MessageError("Ocurrió un error al actualizar el cliente",null);
                		this.Dispose();	                	        
                	}
                }               
           
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }        

        private void buCancelar_Click(object sender, EventArgs e)
        {
        	try{
	        	if(tipoVentana == 1){
	        		this.Dispose();
	        		return;	
	        	}
	        	
	        	if(Utils.MessagePregunta("¿Está seguro que desea cancelar esta acción?"))
					this.Dispose();
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }
        
        public void seleccionarTabMascotas(){
        	tabClienteMascota.SelectTab(tabMascota);
        }
        
        public void actualizarCantidadResultados(int i){
        	CantidadResultaLBL.Text = "Cantidad de Mascotas encontradas: "+i;
        }
        
        public void inicializarCombos(){
        	
        	this.listaSexos = new List<BESexo>();
        	this.listaSexos.Add(new BESexo(-1,"<Seleccionar>"));
        	this.listaSexos.Add(new BESexo(1,"FEMENINO"));
        	this.listaSexos.Add(new BESexo(2,"MASCULINO"));        	
        	this.SexoCB.DataSource = listaSexos;
        	this.SexoCB.ValueMember = "idSexo";
        	this.SexoCB.DisplayMember = "descripcion";        	
        	
        	BLTipoDocumento blTipoDocumento = new BLTipoDocumento();        	  	
        	this.listaTipoDocumento = blTipoDocumento.obtenerTipoDocumento2();        	        
        	if(listaTipoDocumento.Count != 0){
        		this.TipoDocumentoCB.DataSource = listaTipoDocumento;
        		this.TipoDocumentoCB.ValueMember = "idTipoDoc";
    			this.TipoDocumentoCB.DisplayMember = "descripcion";        	
        	}else{
        		//Utils.MessageError("No se han cargado datos en Tipo Documento Identidad",null);
        	}
        	
        	BLCategoriaCliente blCategoriaCliente = new BLCategoriaCliente();
        	this.listaCategoriaCliente = blCategoriaCliente.obtenerCategoriaCliente();        	     	        
        	
        	if (listaCategoriaCliente.Count != 0)
        	{
        		this.CategoriaCB.DataSource = listaCategoriaCliente;        		
        		this.CategoriaCB.ValueMember = "idCategoria";
        		this.CategoriaCB.DisplayMember = "nombre";
        	}
        	else
        	{
        		//MessageBox.Show("No se han cargado datos en Categoría Cliente","Error");
        	}
        	
        	BLEstadoCliente blEstadoCliente = new BLEstadoCliente();
        	this.listaEstadosCliente = blEstadoCliente.obtenerEstadoCliente();
        	
        	if(listaEstadosCliente.Count != 0){
        		this.EstadoCB.DataSource = listaEstadosCliente;
        		this.EstadoCB.ValueMember = "idEstadoCliente";
        		this.EstadoCB.DisplayMember = "descripcion";        		
        		EstadoCB.SelectedValue = listaEstadosCliente.ElementAt(1).IdEstadoCliente;
        	}else{
        		
        	}
        }
        
        public void llenarCampos(){
        	CodigoTB.Text = clienteSeleccionado.IdCliente.ToString();
            NombreTB.Text = clienteSeleccionado.Nombre;
            ApellidoPaternoTB.Text = clienteSeleccionado.ApellidoPaterno;
            ApellidoMaternoTB.Text = clienteSeleccionado.ApellidoMaterno;
            TipoDocumentoCB.SelectedValue = clienteSeleccionado.BeTipoDocumento.IdTipoDoc;
            NumeroDocumentoTB.Text = clienteSeleccionado.DocumentoIdentidad;
            SexoCB.Text = clienteSeleccionado.Sexo;
            FechaNacimientoDTP.Value = clienteSeleccionado.FechaNacimiento;
            
            DirecciontTB.Text = clienteSeleccionado.Direccion;
            telefonoContactoTB.Text = clienteSeleccionado.TelefonoContacto;
            
            FechaCreacionDTP.Value = clienteSeleccionado.FechaCreacion;
            FechaUltModificacionDTP.Value = clienteSeleccionado.FechaModificacion;
            EstadoCB.SelectedValue = clienteSeleccionado.BeEstadoCliente.IdEstadoCliente;
            CategoriaCB.SelectedValue = clienteSeleccionado.BeCategoriaCliente.IdCategoria;
            //IdUsuarioTB.Text = clienteSeleccionado.BeUsuario.Username;	
        }
        	
        public void deshabilitarCampos(){
        	CodigoTB.Enabled = false;
            NombreTB.Enabled = false;
            ApellidoPaternoTB.Enabled = false;
            ApellidoMaternoTB.Enabled = false;
            TipoDocumentoCB.Enabled = false;
            NumeroDocumentoTB.Enabled = false;
            SexoCB.Enabled = false;
            FechaNacimientoDTP.Enabled = false;
            
            DirecciontTB.Enabled = false;
            telefonoContactoTB.Enabled = false;
            
            FechaCreacionDTP.Enabled = false;
            FechaUltModificacionDTP.Enabled = false;
            EstadoCB.Enabled = false;
            CategoriaCB.Enabled = false;
            //IdUsuarioTB.Enabled = false;
            //AceptarEditarBTN.Text = "Editar";
        }
        
        public void habilitarCampos(){
        	CodigoTB.Enabled = false;
            NombreTB.Enabled = true;
            ApellidoPaternoTB.Enabled = true;
            ApellidoMaternoTB.Enabled = true;
            TipoDocumentoCB.Enabled = true;
            NumeroDocumentoTB.Enabled = true;
            SexoCB.Enabled = true;
            FechaNacimientoDTP.Enabled = true;
            
            DirecciontTB.Enabled = true;
            telefonoContactoTB.Enabled = true;
            
            FechaCreacionDTP.Enabled = false;
            FechaUltModificacionDTP.Enabled = false;
            EstadoCB.Enabled = true;
            CategoriaCB.Enabled = true;
            //IdUsuarioTB.Enabled = false;
            //AceptarEditarBTN.Text = "Aceptar";
            FechaUltModificacionDTP.Value = DateTime.Now;     
        }
        
        public void removerTabMascotas(){        	
        	tabClienteMascota.TabPages.Remove(tabMascota);
        }
        
        public void removerTabClientes(){
        	tabClienteMascota.TabPages.Remove(tabCliente);
        }
        
        public void deshabilitarTabMascotas(){
        	tabMascota.Enabled = false;
        }
        
        public void habilitarTabMascotas(){
        	tabMascota.Enabled = true;
        }
        
        public void deshabilitarTabClientes(){
        	tabCliente.Enabled = false;
        }
        
        public void llenarGrillaMascotas(){        	        	    	
        	try{
        		
	        	MascotasDGV.Rows.Clear();        	        	
	        	
	    		BLMascota beMascota = new BLMascota();
	    		listaMascotas = beMascota.obtenerListaMascotas(this.clienteSeleccionado);
	    		
	    		String buscaPareja = "";    		    	
	    		String genero = "";
	    		
				foreach(BEMascota mascota in listaMascotas){				
	    			
	    			if(mascota.BuscaPareja == 'S')
	    				buscaPareja = "SI";
	    			else if(mascota.BuscaPareja == 'N')
	    				buscaPareja = "NO";
	    			
	    			if(mascota.Genero == 'M')
	    				genero = "MACHO";
	    			else if(mascota.Genero == 'H')
	    				genero = "HEMBRA";
	    			
	    			String msgOtraRaza = "";
	    			String msgOtraEspecie = "";
	    			if(!mascota.OtraEspecie.Equals(""))
	    				msgOtraEspecie = "("+mascota.OtraEspecie+")";
	    			if(!mascota.OtraRaza.Equals(""))
	    				msgOtraRaza = "("+mascota.OtraRaza+")";
	    			
					String[] fila = new String[]{
	    				false.ToString(),
						mascota.Id.ToString(),
						mascota.Nombre,	
						genero,					
						mascota.BeRaza.BeEspecie.Descripcion+msgOtraEspecie,
						mascota.BeRaza.Descripcion+msgOtraRaza,									
						buscaPareja
					};
					MascotasDGV.Rows.Add(fila);				
				}        			        				
	    		actualizarCantidadResultados(listaMascotas.Count);    		
        	}catch(Exception ex){
        		//Utils.MessageError("",ex);
        	}
        	
        }
        
        
        public void AceptarBTNClick(object sender, EventArgs e)
        {
        	try{
        	
	        	if(tipoVentana == 1){
	        		this.Dispose();
	        		return;
	        	}
	        	
	        	int cont = 0;
				int aux = 0;
				int pos = 0;
				
				foreach (DataGridViewRow fila in MascotasDGV.Rows)
				{
					if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
					{
						cont++;
						pos = aux;
					}
					aux++;
				}
				
				if (cont == 0)
				{
					Utils.MessageAviso("Seleccione una mascota");	
				}
				else if (cont == 1)
				{								
					DataGridViewRow fila = MascotasDGV.Rows[pos];
					if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
					{					
						this.mascotaSeleccionada = listaMascotas[pos];                   				
						this.Dispose();
					}
				}
				else if (cont > 1)
				{
					Utils.MessageAviso("Seleccione solo una mascota");		
				}
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }

        private void VerBTN_Click(object sender, EventArgs e)
        {
            int cont = 0;
            int aux = 0;
            int pos = 0;

            foreach (DataGridViewRow fila in MascotasDGV.Rows)
            {
                if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
                {
                    cont++;
                    pos = aux;
                }
                aux++;
            }

            if (cont == 0)
            {
            	Utils.MessageAviso("Seleccione una Mascota");
            }
            else if (cont == 1)
            {
                DataGridViewRow fila = MascotasDGV.Rows[pos];
                if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
                {                 
					BLMascota blMascota = new BLMascota();
					if(!blMascota.existeMascota(listaMascotas[pos])){
						Utils.MessageAviso("La mascota fue eliminada anteriormente");
						llenarGrillaMascotas();
						return;
					}
                	
               		this.mascotaSeleccionada = listaMascotas[pos];
                    GUIMascota v = new GUIMascota(mascotaSeleccionada,clienteSeleccionado,1);                    
                    v.ShowDialog(this);
                    //llenarGrillaMascotas();
              	}
            }
            else if (cont > 1)
            {
                Utils.MessageAviso("Seleccione sólo una Mascota");
            }          
        }

        private void NuevoBTN_Click(object sender, EventArgs e)
        {
            GUIMascota v = new GUIMascota(clienteSeleccionado,0);
            //v.cambiarNombreVentana("Registrar nueva Mascota");
            v.GuiCliente = this;
            v.ShowDialog(this);
            //llenarGrillaMascotas();
        }


        private void buEliminar_Click(object sender, EventArgs e)
        {
        	try{        		        
	            int cont = 0;
	            int pos = 0;
	            int aux = 0;
	            
	            List<int> indiceMascotas = new List<int>();
	            List<int> posicionesMascotas = new List<int>();
	
	            foreach (DataGridViewRow fila in MascotasDGV.Rows)
	            {
	                if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
	                {
	                    cont++;
	                    pos = aux;
	                    posicionesMascotas.Add(pos);
	                    indiceMascotas.Add(int.Parse(fila.Cells[1].Value.ToString()));
	                }
	                aux++;
	            }
	
	            if (cont == 0)
	            {
	                Utils.MessageAviso("Debe seleccionar al menos una mascota");
	            }
	            else if (cont > 0)
	            {
	            	if (Utils.MessagePregunta("¿Está seguro que desea eliminar la(las) mascota(s) seleccionada(s)?"))
	                {            		
	                    BLMascota blMascota = new BLMascota();
	                    BEMascota beMascota = new BEMascota();

	                    for(int i=0;i<indiceMascotas.Count;i++){
							beMascota.IdMascota = indiceMascotas[i];
							if(blMascota.existeServicioPendiente(beMascota)){
								// verifico que exista servicios pendientes
								Utils.MessageAviso("No se puede eliminar a "+listaMascotas[posicionesMascotas[i]].Nombre+
								                   ", porque tiene uno o más serviciospendientes");
								continue;
							}							
							
							int r = blMascota.eliminarMascotas(beMascota);						
							if (r != 1)
								Utils.MessageError("Ha ocurrido un error al eliminar el cliente "+listaMascotas[posicionesMascotas[i]].Nombre);
						}
	                    
	                    llenarGrillaMascotas();
	                }
	
	            }
		                        
        	}catch{
        		
        	}
        } 
        
        void TipoDocumentoCBSelectedIndexChanged(object sender, EventArgs e)
        {
        	NumeroDocumentoTB.Text = "";
        	if(Convert.ToInt16(TipoDocumentoCB.SelectedValue) != -1){
        		NumeroDocumentoTB.Enabled = true;
        		switch(Convert.ToInt16(TipoDocumentoCB.SelectedValue)){
        			case 1: 
        				NumeroDocumentoTB.MaxLength = 8;
        				break;
        			case 2: 
        				NumeroDocumentoTB.MaxLength = 11;
        				break;
        			case 3: 
        				NumeroDocumentoTB.MaxLength = 15;
        				break;
        		}        			
        	}
        	else
        		NumeroDocumentoTB.Enabled = false;
        }
        
        void SeleccionarDeseleccionarCHBCheckedChanged(object sender, EventArgs e)
        {
        	if(listaMascotas != null && listaMascotas.Count != 0){
        		
	        	if(SeleccionarDeseleccionarCHB.Checked)	        			        	
					foreach (DataGridViewRow fila in MascotasDGV.Rows)
						fila.Cells[0].Value = true;						        			        
	        	
	        	if(!SeleccionarDeseleccionarCHB.Checked)	        			        	
	        		foreach (DataGridViewRow fila in MascotasDGV.Rows)					
						fila.Cells[0].Value = false;	
        	}

        }
        
        
        void EditarBTNClick(object sender, EventArgs e)
        {        	
        	int cont = 0;
            int aux = 0;
            int pos = 0;

            foreach (DataGridViewRow fila in MascotasDGV.Rows)
            {
                if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
                {
                    cont++;
                    pos = aux;
                }
                aux++;
            }

            if (cont == 0)
            {
                Utils.MessageAviso("Seleccione una Mascota");
            }
            else if (cont == 1)
            {
                DataGridViewRow fila = MascotasDGV.Rows[pos];
                if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
                {      
					BLMascota blMascota = new BLMascota();
					if(!blMascota.existeMascota(listaMascotas[pos])){
						Utils.MessageAviso("La mascota fue eliminada anteriormente");
						llenarGrillaMascotas();
						return;
					}
                	
               		this.mascotaSeleccionada = listaMascotas[pos];
                    GUIMascota v = new GUIMascota(mascotaSeleccionada,clienteSeleccionado,2);                    
                    v.GuiCliente = this;
                    v.ShowDialog(this);
                    //llenarGrillaMascotas();
              	}
            }
            else if (cont > 1)
            {
                Utils.MessageAviso("Seleccione sólo una Mascota");
            }
          
        }
        
        void MascotasDGVCellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
        	try{        		        
	        	if(Convert.ToBoolean(MascotasDGV.Rows[e.RowIndex].Cells[0].Value))
	        		MascotasDGV.Rows[e.RowIndex].Cells[0].Value = false;
	        	else
	        		MascotasDGV.Rows[e.RowIndex].Cells[0].Value = true;	        	
        	}catch{
        		
        	}
        }
        
        void CancelarMascotaBTNClick(object sender, EventArgs e)
        {
        	if(tipoVentana == 1){
        		this.Dispose();
        		return;
        	}
        	
        	//if(Utils.MessagePregunta("¿Está seguro que desea cancelar esta acción?"))
        		this.Dispose();
        }
        
        
        void DejarEnAdopcionBTNClick(object sender, EventArgs e)
        {
        	try{        		        
	            int cont = 0;
	            int pos = 0;
	            int aux = 0;
	            
	            List<int> indiceMascotas = new List<int>();
	            List<int> posicionesMascotas = new List<int>();
	
	            foreach (DataGridViewRow fila in MascotasDGV.Rows)
	            {
	                if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
	                {
	                    cont++;
	                    pos = aux;
	                    posicionesMascotas.Add(pos);
	                    indiceMascotas.Add(int.Parse(fila.Cells[1].Value.ToString()));
	                }
	                aux++;
	            }
	
	            if (cont == 0)
	            {
	                Utils.MessageAviso("Debe seleccionar al menos una mascota");
	            }
	            else if (cont > 0)
	            {
	            	if (Utils.MessagePregunta("¿Está seguro que desea dejar en adopción la(las) mascota(s) seleccionada(s)?"))
	                {            		
	                    BLMascota blMascota = new BLMascota();	                   
	                    BEMascota beMascota = new BEMascota();
	                    BECliente clienteMaster = new BECliente();
	                    clienteMaster.IdCliente = blMascota.obtenerIDClienteNombre();

	                    for(int i=0;i<indiceMascotas.Count;i++){
							beMascota.IdMascota = indiceMascotas[i];
							if(blMascota.existeServicioPendiente(beMascota)){
								// verifico que exista servicios pendientes
								Utils.MessageAviso("No se puede dejar en adopción a "+listaMascotas[posicionesMascotas[i]].Nombre+
								                   ", porque tiene uno o más serviciospendientes");
								continue;
							}							
													
							int r = blMascota.asignarDuenoMascota(beMascota,clienteMaster);
							if (r != 1)
								Utils.MessageError("Ha ocurrido un error al eliminar el cliente "+listaMascotas[posicionesMascotas[i]].Nombre);
						}
	                    
	                    llenarGrillaMascotas();
	                }
	
	            }
		                        
        	}catch{
        		
        	}
        }
    }
}
